/*************************************************************************
	> File Name: Element.h
	> Author: Joker
	> Mail: mahongtao@foxmail.com 
	> Created Time: 2020-09-23 12:01:59
 ************************************************************************/

#ifndef __ELEMENT_H__
#define __ELEMENT_H__

class Visitor;

class Element
{
public:
    virtual ~Element(){}

    virtual void Accept(Visitor & visitor) = 0;

protected:
    Element(){}
};

class ConcreateElementA
:public Element
{
public:
    ConcreateElementA();
    virtual ~ConcreateElementA();
    virtual void Accept(Visitor &visitor) override;
};

class ConcreateElementB
:public Element
{
public:
    ConcreateElementB();
    virtual ~ConcreateElementB();
    virtual void Accept(Visitor &visitor) override;
};

#endif
